<!DOCTYPE html>
<html lang="" xml:lang="">
  <head>
    <title>使用 BP 程序进行特定的光合测量的演示</title>
    <meta charset="utf-8" />
    <meta name="author" content="祝介东" />
    <script src="libs/header-attrs-2.4.5/header-attrs.js"></script>
    <link href="libs/anchor-sections-1.0/anchor-sections.css" rel="stylesheet" />
    <script src="libs/anchor-sections-1.0/anchor-sections.js"></script>
    <link rel="stylesheet" href="zh-CN.css" type="text/css" />
    <link rel="stylesheet" href="extra-rutgers.css" type="text/css" />
    <link rel="stylesheet" href="animate-min.css" type="text/css" />
  </head>
  <body>
    <textarea id="source">
class: center, middle, inverse, title-slide

# 使用 BP 程序进行特定的光合测量的演示
## RACiR 测量
### 祝介东
### 北京力高泰科技有限公司 技术部
### 2020-11-04 修改

---

background-image: url(https://s2.ax1x.com/2020/03/09/8S2l7T.png)

background-size: cover

class: center, middle, animated, fadeIn

# .large[RACiR 测量]
---
class: animated, fadeIn

# RACiR VS. ACi

Laisk（1998）发现二氧化碳通过溶解而扩散到叶片内部后，即使外界二氧化碳浓度在低于 1 s 的时间内出现比较大的浓度变化，Rubisco 羧化速率能够达到一种表观稳定的状态。
 
相比于传统的稳态测量方法，RACiR 技术是一种动态测量叶片尺度的气体交换测量的方式，可以在更短的时间内获取基本的光合能力的测量参数。

自 RACiR 技术的出现以来，已经有较多研究使用其作为计算 Vcmax 和 Jmax 的方法 （Pilon等2018; Lawrence, Stinziano, and Hanson 2019; Coursolle等2019），这意味着使用这两个参数作为重要评估指标或将其作为模型参数的领域 （例如 Keith等2013; Quebbeman and Ramirez 2016; Ali等2016; Rogers等2017） 均可使用 RACiR 技术。 对于部分参数与传统 ACi 曲线结果拟合的差异性 （Taylor 和 Long 2019），一方面二者本身一个为稳态光合测量，一个为动态光合测量，从实现手段上本就存在差异，另一方面是在技术操作层面上，需要按照操作规范进行，则可以避免不应出现的差异 （Stinziano等2018）。作为严肃的学术问题，这些差异不能简单的进行否定，仍需进一步探讨 （Stinziano等2018），并且也有研究表明，暗呼吸速率使用 RACiR 技术则更为准确 （Coursolle等2019）。Stinziano 等 （2019） 针对二者部分参数的差异性的原因进行了讨论，结果表明 RACiR 技术可能揭示更多常规 ACi 测量不能发现的光合属性，并对光合气体交换的扩散性限制和光呼吸速率的评估具有重要意义。
---
class: animated, fadeIn


# 示例6：RACiR 测量

RACiR 测量是 LI-6800 功能上先进性的体现，为 ACi 测量提供了新的研究方向，使用常规方式可以进行 RACiR 测量，但因为要在两个菜单窗口内进行设定，有时不是很方便，但使用 BP 程序，则可以很好的解决这个问题。本例采用下面文章所采用的方法演示：

&lt;img src="./img/conifer-racir.png" width="1131" /&gt;

---
class: animated, fadeIn

# 基本流程

#### 1. 在 420 ppm 浓度下对叶片进行光诱导约 5 min（野外条件，稳定较快，不能一概而论），控制 `\(H_2OR\)` 为 22 mmol/mol，光照 1200 `\(\mu mol\)`。

#### 2. 随后运行一个 AUTO CONTROL，使得二氧化碳浓度以 200 ppm/mins 的速度下降至 20 ppm，也就是进行一个 2 mins 的设置。

#### 3. 再等待 10~15 s(稍等片刻，让二氧化碳浓度彻底达到起始值)，开始真正的 RACiR 测量，使用 20~1520 ppm 的二氧化碳浓度变化，变化速率为 100 ppm/min。

.red.large.bold[注：使用 RACiR 测量，必须要控制 `\(CO_2R\)`, 而不同于普通的 ACi 测量，建议控制 `\(CO_2R\)`，但控制 `\(CO_2S\)` 并无问题。]

---
class: animated, fadeIn

# 关键步骤

``` python

AUTOENV("1",
	target="CO2_r",
	range=('start_co2', 'end_co2'),
	f_of_t="Linear",
	period="racir_time",
	repeat=False),
AUTOENV("1",dir="Forward",time="0"),
AUTOENV("1",start=True),
[,var=''] [,mininc=''])
LOOP(dur="racir_time",
	units="Minutes",
	mininc="log_interval",
	steps=(
	 [,flr='Default'] [flash='Default'])
		LOG(avg="Off",
			match="Off",
			flr="0: Nothing"),
	)
),
```
---
class: animated, fadeIn

# 步骤详解

本质上来讲，RACiR 的实现非常简单，因为我们有已经写好的 AUTOENV SETP，它的本质则为 AUTO Control 界面的所有功能。我们所要做的只是设置好对应的功能即可，即：确定测量的二氧化碳浓度范围，测量的方向，确定测量时长，确定记录间隔。

&lt;img src="./img/autoenv.png" width="995" /&gt;

---
class: animated, fadeIn, center, middle, inverse

# .large[示例6的演示]
---
class: inverse, center, middle, animated, fadeIn

# .large[谢谢！]

![](./img/gif-qrcode.gif)&lt;!-- --&gt;
## 关注公众号后获取更多精彩内容
    </textarea>
<style data-target="print-only">@media screen {.remark-slide-container{display:block;}.remark-slide-scaler{box-shadow:none;}}</style>
<script src="https://remarkjs.com/downloads/remark-latest.min.js"></script>
<script>var slideshow = remark.create({
"ratio": "16:9",
"highlightStyle": "ir-black",
"highlightLines": true,
"countIncrementalSlides": false
});
if (window.HTMLWidgets) slideshow.on('afterShowSlide', function (slide) {
  window.dispatchEvent(new Event('resize'));
});
(function(d) {
  var s = d.createElement("style"), r = d.querySelector(".remark-slide-scaler");
  if (!r) return;
  s.type = "text/css"; s.innerHTML = "@page {size: " + r.style.width + " " + r.style.height +"; }";
  d.head.appendChild(s);
})(document);

(function(d) {
  var el = d.getElementsByClassName("remark-slides-area");
  if (!el) return;
  var slide, slides = slideshow.getSlides(), els = el[0].children;
  for (var i = 1; i < slides.length; i++) {
    slide = slides[i];
    if (slide.properties.continued === "true" || slide.properties.count === "false") {
      els[i - 1].className += ' has-continuation';
    }
  }
  var s = d.createElement("style");
  s.type = "text/css"; s.innerHTML = "@media print { .has-continuation { display: none; } }";
  d.head.appendChild(s);
})(document);
// delete the temporary CSS (for displaying all slides initially) when the user
// starts to view slides
(function() {
  var deleted = false;
  slideshow.on('beforeShowSlide', function(slide) {
    if (deleted) return;
    var sheets = document.styleSheets, node;
    for (var i = 0; i < sheets.length; i++) {
      node = sheets[i].ownerNode;
      if (node.dataset["target"] !== "print-only") continue;
      node.parentNode.removeChild(node);
    }
    deleted = true;
  });
})();
(function() {
  "use strict"
  // Replace <script> tags in slides area to make them executable
  var scripts = document.querySelectorAll(
    '.remark-slides-area .remark-slide-container script'
  );
  if (!scripts.length) return;
  for (var i = 0; i < scripts.length; i++) {
    var s = document.createElement('script');
    var code = document.createTextNode(scripts[i].textContent);
    s.appendChild(code);
    var scriptAttrs = scripts[i].attributes;
    for (var j = 0; j < scriptAttrs.length; j++) {
      s.setAttribute(scriptAttrs[j].name, scriptAttrs[j].value);
    }
    scripts[i].parentElement.replaceChild(s, scripts[i]);
  }
})();
(function() {
  var links = document.getElementsByTagName('a');
  for (var i = 0; i < links.length; i++) {
    if (/^(https?:)?\/\//.test(links[i].getAttribute('href'))) {
      links[i].target = '_blank';
    }
  }
})();
// adds .remark-code-has-line-highlighted class to <pre> parent elements
// of code chunks containing highlighted lines with class .remark-code-line-highlighted
(function(d) {
  const hlines = d.querySelectorAll('.remark-code-line-highlighted');
  const preParents = [];
  const findPreParent = function(line, p = 0) {
    if (p > 1) return null; // traverse up no further than grandparent
    const el = line.parentElement;
    return el.tagName === "PRE" ? el : findPreParent(el, ++p);
  };

  for (let line of hlines) {
    let pre = findPreParent(line);
    if (pre && !preParents.includes(pre)) preParents.push(pre);
  }
  preParents.forEach(p => p.classList.add("remark-code-has-line-highlighted"));
})(document);</script>

<script>
slideshow._releaseMath = function(el) {
  var i, text, code, codes = el.getElementsByTagName('code');
  for (i = 0; i < codes.length;) {
    code = codes[i];
    if (code.parentNode.tagName !== 'PRE' && code.childElementCount === 0) {
      text = code.textContent;
      if (/^\\\((.|\s)+\\\)$/.test(text) || /^\\\[(.|\s)+\\\]$/.test(text) ||
          /^\$\$(.|\s)+\$\$$/.test(text) ||
          /^\\begin\{([^}]+)\}(.|\s)+\\end\{[^}]+\}$/.test(text)) {
        code.outerHTML = code.innerHTML;  // remove <code></code>
        continue;
      }
    }
    i++;
  }
};
slideshow._releaseMath(document);
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src  = 'https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-MML-AM_CHTML';
  if (location.protocol !== 'file:' && /^https?:/.test(script.src))
    script.src  = script.src.replace(/^https?:/, '');
  document.getElementsByTagName('head')[0].appendChild(script);
})();
</script>
  </body>
</html>
